package com.pys.beans;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.apache.commons.lang.StringUtils;

import com.pys.common.beans.BaseBean;
import com.pys.pojo.PysTalepDurum;
import com.pys.service.TalepDurumService;
import com.pys.utils.FacesUtils;

@ManagedBean
@ViewScoped
public class TalepDurumBean extends BaseBean implements Serializable {
	private String ad;
	private boolean durum = true;
	private List<PysTalepDurum> list;
	private PysTalepDurum selectedTalepDurum;

	public TalepDurumBean() {
		refreshList();
	}

	/*
	 * ACTIONS
	 */
	public void refreshList() {
		TalepDurumService talepDurumService = new TalepDurumService();
		list = talepDurumService.getAllList(false);
	}

	public void saveAction() {
		if (StringUtils.isBlank(ad)) {
			FacesUtils.addMessage(FacesMessage.SEVERITY_ERROR,
					"VALIDATION_TALEP_DURUM_AD");
			return;
		}

		TalepDurumService talepDurumService = new TalepDurumService();
		if (selectedTalepDurum == null) {
			PysTalepDurum pysTalepDurum = new PysTalepDurum();
			pysTalepDurum.setAd(ad);
			pysTalepDurum.setDurum(durum);
			pysTalepDurum.setOlusturmaTarih(new Date());
			pysTalepDurum.setPysKullanici(FacesUtils.getUserSession()
					.getCurrentUser());
			talepDurumService.save(pysTalepDurum);
		} else {
			selectedTalepDurum.setAd(ad);
			selectedTalepDurum.setDurum(durum);
			selectedTalepDurum.setGuncellemeTarih(new Date());
			selectedTalepDurum.setPysKullanici(FacesUtils.getUserSession()
					.getCurrentUser());
			talepDurumService.update(selectedTalepDurum);
		}
		refreshList();
		clear();
		FacesUtils.successMessage();
	}

	public void deleteAction() {
		TalepDurumService talepDurumService = new TalepDurumService();
		selectedTalepDurum.setDeleted(true);
		talepDurumService.update(selectedTalepDurum);
		refreshList();
		clear();
		FacesUtils.successMessage();
	}

	public void updateAction() {
		ad = selectedTalepDurum.getAd();
		durum = selectedTalepDurum.isDurum();
	}

	public void clear() {
		selectedTalepDurum = null;
		ad = null;
		durum = true;
	}

	/*
	 * GETTER-SETTER
	 */

	public String getAd() {
		return ad;
	}

	public void setAd(String ad) {
		this.ad = ad;
	}

	public List<PysTalepDurum> getList() {
		return list;
	}

	public void setList(List<PysTalepDurum> list) {
		this.list = list;
	}

	public PysTalepDurum getSelectedTalepDurum() {
		return selectedTalepDurum;
	}

	public void setSelectedTalepDurum(PysTalepDurum selectedTalepDurum) {
		this.selectedTalepDurum = selectedTalepDurum;
	}

	public boolean isDurum() {
		return durum;
	}

	public void setDurum(boolean durum) {
		this.durum = durum;
	}

}
